package org.aplombh.java.awcing.basic.math.euclid;

import java.util.Scanner;

/**
 * 给定 n 组数据 ai,bi,mi，对于每组数求出一个 xi，使其满足 ai×xi≡bi(modmi)，如果无解则输出 impossible。
 *
 * 输入格式
 * 第一行包含整数 n。
 *
 * 接下来 n 行，每行包含一组数据 ai,bi,mi。
 *
 * 输出格式
 * 输出共 n 行，每组数据输出一个整数表示一个满足条件的 xi，如果无解则输出 impossible。
 *
 * 每组数据结果占一行，结果可能不唯一，输出任意一个满足条件的结果均可。
 *
 * 输出答案必须在 int 范围之内。
 *
 * 数据范围
 * 1≤n≤105,
 * 1≤ai,bi,mi≤2×109
 * 输入样例：
 * 2
 * 2 3 6
 * 4 3 5
 * 输出样例：
 * impossible
 * -3
 */
public class LinearCongruenceEquation_878 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        LinearCongruenceEquation linearCongruenceEquation = new LinearCongruenceEquation();
        for (int i = 0; i < n; i++) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            int m = scanner.nextInt();
            int d = linearCongruenceEquation.exgcd(a, m);
            if (b % d != 0) System.out.println("impossible");
            else System.out.println((long)linearCongruenceEquation.x * (b / d) % m);
        }
    }
}


class LinearCongruenceEquation {
    int gcd(int a, int b) {
        return b != 0 ? gcd(b, a % b) : a;
    }

    int x, y;

    int exgcd(int a, int b) {

        if (b == 0) {
            x = 1;
            y = 0;
            return a;
        }

        int d = exgcd(b, a % b);

        int tmp = x - a / b * y;
        x = y;
        y = tmp;

        return d;
    }
}
